netstormfandomcom-20200213-history
IF/THEN
Conditionals in NS Script Yes, Netstorm does have an If/Then conditional. And yes, you can do lots and lots of neat stuff with this. But first, you gotta learn the syntax, and the known limitations before you should use this in your Campaigns... Simply Put: When we make a decision, we either choose a Yes decision (Yes, I want an IceCream! With Lots and Lots of Gooey stuff on it!), or a No decision. (No, I don't want an IceCream. Too fattening!). We may change our mind later on, but ultimately every decision we make comes down to Yes (take action) or No (take another action). Well, the if/then in NS script is very similar in operation. You can have something be performed when a condition is TRUE (or YES), or you can have something be performed when a condition is FALSE (or NO - or NOT TRUE). Ahh... the gears are starting to turn now. You're probably saying I've used NOT before in Netstorm. And you have, if you've used the ainAbility="" command (Remember things such as ai2Ability="!CAPTURE_ENEMY_PRIEST"). Well, you can use ! with conditionals, also. So, this gives us two flavors for the If/then conditional: True and false. A Variable by any Other Name is Still a Variable: At this point, what we know of the conditional, is that the if/then is almost certainly used with flags. What the heck is a flag, you say? Well, for programmers, it's a variable that is either TRUE (1), or FALSE (0). Flags are great for keeping track of allys, Tech, etc. in Netstorm Missions. Say you have an ally in your Campaign. You want to have something to indicate whether the ally is dead or alive. AHA! Lets try using a flag for this! So, you could set up a variable named sw_allyDead=0. This would indicate that the ally is NOT dead. If later in the Campaign your ally dies, then you would set sw_allyDead=1. Yeah, but how do we use the if/then along with flags to do some neat stuff? Well, let's take a look at if/thens: Putting it All Together: The if/then is almost always used after the OptionsA. in the english file. And for that reason, the command is enclosed in < >. The basic syntax for the if/then is: Do something that's true Wow. Is that syntax strange, or what? Let's look more closely at the statement. The ? is the IF part of the command. VariableName should be the flag that keeps track of stuff for us. Do something that's true can either be text that's displayed or another command that's can be executed when the conditions of the conditional are met (TRUE or NOT TRUE). The at the end indicates to end the command at this point. This implies that the if/then statement can be multi-lined. This is true. Back to our example. Let's have our story change in our mission depending on whether our ally dies or not. You want this to happen during the Succeeded or Failed. Let's see how to do it. AI2 is the ally, while AI3 is the enemy in this example: Header ....... all normal header stuff..... Init <$Config,sw_allyDead=0> <$Config,sw_enemyName="Lord of ~yLIGHT~."> <$Config,sw_allyName="Lord ~k~BFOUL~."> Options A. ~yTO WAR! ~IsunCannon.3~Ianim.48~Ilightning.*~Ipriest.127 Another day another war! You call to your friend, {sw_allyName}. "Hey there good buddy! Let's attack those pesky and sickeningly nice {sw_enemyName} Priests!"~. {sw_allyName}, eager to attack and destroy anything that's good or nice, immediately agrees! $Button=TO WAR,DoNothing,0 ai2PriestDead Oh, no! Your ally {sw_allyName}, has been sacked! You will make the enemy pay for this! <$Config,sw_allyDead=1> $Button=FIGHT ON!,DoNothing,0 SucceededBadTeamDead Horrah! You and your ally are triumphant! You both have shown the enemy who isare the real rulers of Netstorm! A moment of silence as you greive of your loss of your friend. The Furies are well pleased with you and {sw_allyName}'s easy victory. To celebrate, they grant you the power of wind! $Menu=~IwindArcher.*~yCrossbow,Config,sw_weapon1=1 Failed What a nightmare. You and your ally, {sw_allyName}, have been sacrificed! The furies give you another chance, as they ressurect you and your ally, from the depths of Hell down below! $Button=Retry Mission,MissionBegin,{mission.Filename} What the heck is all that , etc etc. Yeah, I know it looks pretty confusing. And it's a lot of code to digest in one sitting. But it's actually not that bad. Look at everything with a color of pinkish-red. This part of the code will only occur when sw_allyDead=1 (or the ally is DEAD). The code that's in green, will only execute when sw_allyDead=0 (meaning that your buddy is alive). How do we make our buddy alive? In the Init routine. We make the ally flag set to 0. Later, if our buddy gets sacked we change the sw_allyDead flag to a 1. Now, in this example, everything will continue, even if your friend gets sacked, until either you win the game, or you lose the game. Then we use a lot of if/then's to change the story. Couple of things to note. See the last line? See the MissionBegin,{Mission.Filename}? This will cause NS to restart whatever fort file that was just played. Pretty neat. Also, when you win, another variable is set: sw_weapon1=1. In this example, I would use this flag to show other parts of code in the next mission that the player has the Crossbow. But that another subject and another Lesson.... So what happens when we run it? Well, there can be quite a few different outcomes. But first, the intro screen will always stay the same: Ok, we made our point with getting the player's interest. Now let's see what happens when the Mission continues... How many different things can happen? Well we can lose our ally and lose the game lose our ally but win the game lose the game, but the ally is ok win the game with our ally alive If we lose, we may either have or not have our ally alive. Below, the screen on the left shows what will be displayed if we both get sacked. On the right, is the screen that's displayed if the player gets killed, but the ally survives. Now, onto the win conditions. We can either win, with our ally or win without our ally (sniff sniff). Below, is shown on the left without the ally making it, and on the right, we did everything right in the mission and our buddy was saved: Hmm... interesting. Lots of possibilities. But there's more. Combining to form AND and OR: You can combine if/then statements and flags to give you more options! I'll only touch on this here, since this is another section I'll be exploring very soon ( in an advanced editing section titled Operators101). You can have this, which combines if/then and flags to make an AND condition. Notice that the only way the code in green will run, is when both flag1 and flag2 are TRUE (or 1): Both flag1 and flag2 have to be 1 to show this category:NEC